package com.water_work_form.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.water_work_form.entity.RecordDisinfect;
import com.water_work_form.entity.RecordOrganoleptic;
import com.water_work_form.result.Result;
import com.water_work_form.result.ResultCodeEnum;
import com.water_work_form.result.ResultUtil;
import com.water_work_form.service.RecordOrganolepticService;
import com.water_work_form.util.RandomIdUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.util.Map;

/**
 * <p>
 * 记录——感官性状指标原始记录 前端控制器
 * </p>
 *
 * @author xuke
 * @since 2023-09-14
 */
@RestController
@RequestMapping("/record-organoleptic")
public class RecordOrganolepticController {

    @Autowired
    RecordOrganolepticService recordOrganolepticService;

    /**
     * 记录——感官性状指标原始记录 项目新增
     * @param recordOrganoleptic 新项目
     * @return 返回对应result，code 0为成功
     */
    @ApiOperation("新增")
    @PostMapping("/add")
    public Result addRecordOrganoleptic(@RequestBody RecordOrganoleptic recordOrganoleptic){
        recordOrganoleptic.setId(RandomIdUtil.createRandomId());
        recordOrganolepticService.save(recordOrganoleptic);
        return ResultUtil.success(ResultCodeEnum.SUCCESS, recordOrganoleptic);
    }

    /**
     * 记录——感官性状指标原始记录 项目查询（三个查询项+分页）
     * @param checkUser 检测人（check_user_name）
     * @param reviewUser 审核人（review_user_name）
     * @param status 项目状态（status）
     * @param current 分页查询 当前页数
     * @param size 分页查询 每页最大数据量
     * @return 返回相应数据
     */
    @ApiOperation("查看(分页)")
    @GetMapping("/pageList")
    public Result listRecordOrganoleptic(@RequestParam("checkUser") String checkUser, @RequestParam("reviewUser") String reviewUser, @RequestParam("status") String status,
                                         @RequestParam("current") Integer current, @RequestParam("size") Integer size){
        IPage<RecordOrganoleptic> page = recordOrganolepticService.selectRecordOrganoleptic(checkUser, reviewUser, status, current, size);
        return ResultUtil.success(ResultCodeEnum.SUCCESS, page);
    }

    /**
     * 记录——感官性状指标原始记录 项目删除
     * @param id 需要删除的项目id
     * @return 返回对应result，code 0为成功
     */
    @ApiOperation("删除")
    @DeleteMapping("/delete")
    public Result deleteRecordOrganoleptic(@RequestParam("id") Long id){
        recordOrganolepticService.removeById(id);
        return ResultUtil.success(ResultCodeEnum.SUCCESS);
    }

    /**
     * 记录——感官性状指标原始记录 项目更新
     * @param recordOrganoleptic 更新的项目
     * @return 返回对应result，code 0为成功
     */
    @ApiOperation("更新")
    @PostMapping("/update")
    public Result updateRecordOrganoleptic(@RequestBody RecordOrganoleptic recordOrganoleptic){
        recordOrganolepticService.updateById(recordOrganoleptic);
        return ResultUtil.success(ResultCodeEnum.SUCCESS);
    }

    /**
     * 记录——感官性状指标原始记录 基础表数据查询
     * @param name form表name
     * @param restrictionName6 restriction表name
     * @param restrictionName7 restriction表name
     * @param restrictionName8 restriction表name
     * @param restrictionName9 restriction表name
     * @param restrictionName10 restriction表name
     * @param restrictionName11 restriction表name
     * @param drugName drug表name
     * @return 返回对应数据
     */
    @ApiOperation("基础表数据查询")
    @GetMapping("/basicList")
    public Result listOrganoleptic(@RequestParam("name") String name, @RequestParam("restrictionName6") String restrictionName6, @RequestParam("restrictionName7") String restrictionName7,
                                   @RequestParam("restrictionName8") String restrictionName8, @RequestParam("restrictionName9") String restrictionName9,
                                   @RequestParam("restrictionName10") String restrictionName10, @RequestParam("restrictionName11") String restrictionName11, @RequestParam("drugName") String drugName){
        Map<String,Object> map = recordOrganolepticService.selectBasicOrganoleptic(name, restrictionName6, restrictionName7, restrictionName8, restrictionName9, restrictionName10, restrictionName11, drugName);
        return ResultUtil.success(ResultCodeEnum.SUCCESS, map);
    }

    /**
     * 记录——感官性状指标原始记录 数据表导出
     * @param recordOrganoleptic 需要导出的数据列表
     * @return 返回相应数据
     * @throws IOException 异常
     */
    @ApiOperation("列表导出")
    @PostMapping(value = "/download-word")
    public Result downloadWordRecordOrganoleptic(@RequestBody RecordOrganoleptic recordOrganoleptic) throws IOException  {
        recordOrganolepticService.downloadRecordOrganoleptic(recordOrganoleptic);
        return ResultUtil.success(ResultCodeEnum.SUCCESS);
    }


}

